<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Sugar</title>
</head>

<body>
  <script>
    /* 注意点：
      1. 创建 Promise 对象时必须传入函数
      2. Promise 对象的三个方法
            .then()      成功
            .catch()     失败
            .finally()   完成(不管成功失败)
    */

    /* 
      resolve 形参 用于对应 .then()  的 
      reject  形参 用于对应 .catch() 的
    */
    const p2 = new Promise((resolve, reject) => {
      console.log('Promise内部其他的业务逻辑');
      if (true) {
        // 这里对应了 then 回调回调函数
        resolve(111);
      } else {
        // 这里对应了 catch 回调回调函数
        reject(222);
      }
    });

    // 异步回调函数写法
    // p2.then(res => {
    //   console.log('1. 代码会从上往下执行吗?', res);
    // });
    // console.log('2. 这是写到后面的代码');

    // async 函数内同步写法
    async function onLoad() {
      // 1. await 后面跟 Promise 对象，相当于自动执行 Promise对象内部的 resolve。
      // 2. 代码由异步变成同步，从上往下执行了。
      const res = await p2;
      console.log('1. 代码会从上往下执行吗?', res);
      console.log('2. 这是写到后面的代码');
    }

    onLoad();
  </script>
</body>

</html>